﻿using System.Data.OleDb;
using TheOutLetLibrary.Dominio;

namespace TheOutLetLibrary.Infraestrutura {

    public interface IFactoryDAO {

        OleDbConnection GetConexao { get; }

        IProdutoDAO GetProdutoDAO(OleDbTransaction transacao);
        IRemessaDAO GetRemessaDAO(OleDbTransaction transacao);
        IEmpresaDAO GetEmpresaDAO(OleDbTransaction transacao);

        IGenericDAO<NotaFiscal> GetNotaFiscalDAO(OleDbTransaction transacao);
        IGenericDAO<ItemNotaFiscal> GetItemNotaFiscalDAO(OleDbTransaction transacao);

        Ik_orderDAO Getk_orderDAO(OleDbTransaction transacao);
        IGenericDAO<k_customer> Getk_customerDAO(OleDbTransaction transacao);
        IGenericDAO<k_phone> Getk_cellphoneDAO(OleDbTransaction transacao);
        IGenericDAO<k_phone> Getk_phoneDAO(OleDbTransaction transacao);
        IGenericDAO<k_address> Getk_addressbillingDAO(OleDbTransaction transacao);
        IGenericDAO<k_address> Getk_addressshippingDAO(OleDbTransaction transacao);
        IGenericDAO<k_payment> Getk_paymentDAO(OleDbTransaction transacao);
        IGenericDAO<k_delivery> Getk_deliveryDAO(OleDbTransaction transacao);
        IGenericDAO<k_freight> Getk_freightDAO(OleDbTransaction transacao);
        IGenericDAO<k_orderLine> Getk_orderLineDAO(OleDbTransaction transacao);
        IGenericDAO<k_cart> Getk_cartDAO(OleDbTransaction transacao);
        IGenericDAO<k_product> Getk_productDAO(OleDbTransaction transacao);

        IGenericDAO<k_category> Getk_categoryDAO(OleDbTransaction transacao);
        IGenericDAO<k_brand> Getk_brandDAO(OleDbTransaction transacao);
        IGenericDAO<k_image> Getk_imageDAO(OleDbTransaction transacao);
        IGenericDAO<k_sku> Getk_skuDAO(OleDbTransaction transacao);

    }

}
